package com.suse.service.admin.edu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.suse.common.config.response.R;
import com.suse.service.admin.edu.model.entity.Course;
import com.suse.service.admin.edu.model.param.CourseQueryQueryParam;
import com.suse.service.admin.edu.model.param.CourseSaveParam;
import com.suse.service.admin.edu.model.param.CourseUpdateParam;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author 辜玉彬
 * @since 2022-08-11
 */
public interface CourseService extends IService<Course> {

    /**
     * 添加课程
     * @param courseSaveParam 课程添加参数
     * @return R
     */
    R saveCourse(CourseSaveParam courseSaveParam);

    /**
     * 通过ID获取课程信息
     * @param id ID
     * @return R
     */
    R getCourseInfoById(String id);

    /**
     * 修改课程
     * @param courseUpdateParam 课程修改参数
     * @return R
     */
    R updateCourse(CourseUpdateParam courseUpdateParam);

    /**
     * 获取课程状态
     * @param id ID
     * @return R
     */
    R getCourseStep(String id);

    /**
     * 获取课程表格列表(分页)
     * @param courseQueryParam 课程查询参数
     * @return R
     */
    R getCourseTable(CourseQueryQueryParam courseQueryParam);

    /**
     * 通过ID删除课程
     * @param id ID
     * @return R
     */
    R removeCourseById(String id);

    /**
     * 通过ID获取课程发布信息
     * @param id ID
     * @return R
     */
    R getCoursePublishInfoById(String id);

    /**
     * 通过ID发布课程
     * @param id ID
     * @return R
     */
    R publishCourseById(String id);

}
